package com.shujia.scala

object Demo17Match {

  def main(args: Array[String]): Unit = {


    /**
      * 模式匹配
      *
      *
      * java中switch 可以匹配  字符串  基本数据类型  枚举
      *
      * scala中的模式匹配可以匹配  对象 字符串 基本数据类型   类型匹配  自定义类型匹配
      *
      */


    //匹配基本数据类型
    val i = 10

    i match {
      case 10 => println("的值是10")
      case 20 => println("的值是20")
      case _ => println("其它")
    }


    // 匹配字符串

    val str = "数加"

    str match {

      case "数加" => println("数加")
      case "java" => println("java")
      case _ => println("其他")
    }


    //匹配类型

    val obj: Any = 10

    obj match {
      case s: String => println("obj是一个字符串：" + s)
      case i: Int => println("obj是一个整数：" + i)
      case _ => println("obj是其他类型：" + obj)
    }

    //匹配样例类
    val event = Event("001", "20200115")


    event match {
      case Event("001", "20200116") => println(event)
      case Event("002", "20200115") => println(event)
      case _ => println("其他")
    }

    //匹配样例类中的字段
    event.id match {
      case "001" => println(event)
      case "002" => println(event)
      case _ => println("其它")
    }


    val map = Map("001" -> "张三", "002" -> "李四")

    val option: Option[String] = map.get("001")

    //如果key存在 返回对应的value  key不存在，返回默认值
    val value = option match {
      case Some(v) => v //返回v
      case None => "默认值"
    }



  }

  case class Event(id: String, time: String)

}
